package br.com.lib.connection
{
	import mx.controls.Alert;
	import mx.rpc.events.FaultEvent;
	import mx.rpc.events.ResultEvent;
	import mx.rpc.remoting.mxml.RemoteObject;

	public class ServerClass extends RemoteObject
	{
		//Contém o nome da classe que está definida na pasta php
		private var ClassName:String;
		
		//Contém a função que será chamada no resultado da requisição AMF
		private var resultFunction:Function;
		
		public function ServerClass(ClassName:String)
		{
			super("amfphp");
			this.ClassName = ClassName;
			this.showBusyCursor = true;
			this.source = "ServerClass";
		} 
		
		public function call(MethodName:String, result:Function=null, arg:Object=null):void{
				
			//Adiciona o evento de resposta se a conexão ocorrer sem problemas
			if (result!=null)
			{
				resultFunction = result;
				this.addEventListener(ResultEvent.RESULT,OnResult);
			}			
			
			//Adiciona o evento que irá exibir uma mensagem de erro
			this.addEventListener(FaultEvent.FAULT, Erro);
						
			//Outra mudança em relação a classe original do amfphp
			this.getOperation("call").send(ClassName, MethodName, arg);
		}
		
		private function OnResult(event:ResultEvent):void{					
			 resultFunction(event);
		}
		
		private function Erro(event:FaultEvent):void{
			Alert.show(event.message.toString() , "Tela de Erro");
		}
	}
}